home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt85jul.lbr / FORMAT.AQM / FORMAT.ASM
Assembly Source File  |  1985-09-15  |  3KB  |  57 lines

  1.  ORG $300
  2.  JSR $DD67     ;Get the format length
  3.  JSR $E6FB     ;Convert format length to single byte in X register
  4.  CPX #$10     ;Is the length greater or equal to 16?
  5.  BCC $030D     ;No... continue on
  6.  JSR $E199     ;Print ?ILLEGAL QUANTITY ERROR, goto Applesoft
  7.  STX $06     ;Store the format length
  8.  JSR $DEBE     ;Check for a comma (,)
  9.  JSR $DD67     ;Get the number of places following the decimal
  10.  JSR $E6FB     ;Convert to a single byte in the X register
  11.  CPX #$09     ;Is the number of decimal places greater than 8?
  12.  BCS $030A     ;  Yes... go print error
  13.  CPX #$00     ;Is the number of decimal places equal to zero?
  14.  BEQ $030A     ;  Yes... go print error
  15.  STX $07     ; Store number of decimal places.
  16.  JSR $DEBE     ;Check for comma (,)
  17.  JSR $DD67     ;Get the number to be formatted, store at $9D to $A3
  18.  JSR $ED34     ;Convert number to an ASCII string starting at $0100
  19.  LDX #$FF     ;Initialize X as index
  20.  INX         ;Increment index
  21.  LDA $0100,X     ;Get an ASCII character
  22.  BEQ $0337     ;End of string?  Yes... go calculate leading spaces
  23.  CMP #$2E     ;Found a decimal point?
  24.  BNE $032D     ;  No... continue counting
  25.  STX $08     ;Store number of characters before decimal point
  26.  LDA $06     ;Get the format length
  27.  SEC         ;Subtract from the length, the number of
  28.  SBC $07     ; places after the decimal and the number of
  29.  SBC $08     ; characters in front of the decimal.
  30.  TAX         ;Store the result in X and decrement to
  31.  DEX         ; allow form the decimal point.
  32.  BEQ $0349     ;If equal to zero continue on...
  33.  BMI $030A     ;If less than zero go print error
  34.  JSR $F94A     ;Print number of spaces in the X register
  35.  LDY $07     ;Get back number of decimal places in the Y register
  36.  LDX #$00     ;Initialize X as index
  37.  LDA $0100,X     ;Get an ASCII character
  38.  BEQ $035C     ;If end of string go print the decimal point.
  39.  CMP #$2E     ;Is character a decimal point?
  40.  BEQ $0367     ;  Yes... go print number of places after decimal
  41.  JSR $DB5C     ;Print the character in the A register
  42.  INX         ;Increment index to point to next ASCII character
  43.  BNE $034D     ;Go get next character
  44.  LDA #$2E     ;Load A register with ASCII value for decimal point
  45.  JSR $DB5C     ;Print the decimal point
  46.  LDA #$30     ;Load A register with ASCII value for a zero (0)
  47.  DEY         ;Decrement number of decimal places to be printed
  48.  BPL $035E     ;Continue printing decimal places until done.
  49.  RTS         ;Return to calling routine 
  50.  JSR $DB5C     ;Print the decimal point
  51.  INX         ;Increment index to point to next ASCII character
  52.  LDA $0100,X     ;Get an ASCII character
  53.  BEQ $0361     ;If end of string go finish printing
  54.  DEY         ;Decrement number of decimal places to be printed
  55.  BPL $0367     ;Continue printing decimal places until done
  56.  RTS         ;Return to calling routine
  57.  of decim